package controller

import (
	"doctor_api_backend/config"
	"fmt"
	"net/http"

	model "doctor_api_backend/models"

	"github.com/gin-gonic/gin"
)

// 永远也不要管表的id，而是管表的其他唯一项

// 获取所有病种模板 通过sick_template_code获取所有病种模板
func GetSickTemplates(c *gin.Context) {
	var sickTemplates []model.SickTemplate
	err := config.DB.Find(&sickTemplates).Error
	if err != nil {
		c.JSON(http.StatusInternalServerError, gin.H{"error": "获取病种模板失败"})
		return
	}
	c.JSON(http.StatusOK, sickTemplates)

	// 打印病种模板数量
	fmt.Println("病种模板数量:", len(sickTemplates))

}

// 获取单个病种模板 通过sick_template_code获取单个病种模板
func GetSickTemplate(c *gin.Context) {
	// 获取病种模板ID
	id := c.Param("id")
	// 定义病种模板变量
	var sickTemplate model.SickTemplate
	// 查询病种模板
	err := config.DB.First(&sickTemplate, id).Error
	if err != nil {
		c.JSON(http.StatusNotFound, gin.H{"error": "病种模板未找到"})
		return
	}
	// 返回病种模板
	c.JSON(http.StatusOK, sickTemplate)

	// 打印病种模板
	fmt.Println("病种模板:", sickTemplate)
}

// 创建病种模板 通过sick_template_code创建病种模板
func CreateSickTemplate(c *gin.Context) {
	// 定义病种模板变量
	var sickTemplate model.SickTemplate
	// 绑定病种模板
	if err := c.ShouldBindJSON(&sickTemplate); err != nil {
		c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
		return
	}
	// 创建病种模板
	err := config.DB.Create(&sickTemplate).Error
	if err != nil {
		c.JSON(http.StatusInternalServerError, gin.H{"error": "创建病种模板失败"})
		return
	}
	// 返回创建成功信息
	c.JSON(http.StatusOK, sickTemplate)
	// 打印创建成功信息
	fmt.Println("创建病种模板成功:", sickTemplate)
}

// 更新病种模板 通过sick_template_code更新病种模板
func UpdateSickTemplate(c *gin.Context) {
	// 获取病种模板ID
	id := c.Param("id")
	// 定义病种模板变量
	var sickTemplate model.SickTemplate
	// 设置病种模板ID
	_ = id
	// 查询病种模板
	err := config.DB.First(&sickTemplate, id).Error
	if err != nil {
		c.JSON(http.StatusNotFound, gin.H{"error": "病种模板未找到"})
		return
	}
	// 绑定病种模板
	if err := c.ShouldBindJSON(&sickTemplate); err != nil {
		c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
		return
	}
	// 更新病种模板
	err = config.DB.Save(&sickTemplate).Error
	if err != nil {
		c.JSON(http.StatusInternalServerError, gin.H{"error": "更新病种模板失败"})
		return
	}
	// 返回更新成功信息
	c.JSON(http.StatusOK, sickTemplate)
	// 打印更新成功信息
	fmt.Println("更新病种模板成功:", sickTemplate)
}

// 删除病种模板 通过sick_template_code删除病种模板
func DeleteSickTemplate(c *gin.Context) {
	// 获取病种模板ID
	id := c.Param("id")
	// 定义病种模板变量
	var sickTemplate model.SickTemplate
	// 设置病种模板ID
	_ = id
	// 删除病种模板
	err := config.DB.Delete(&sickTemplate, id).Error
	if err != nil {
		c.JSON(http.StatusInternalServerError, gin.H{"error": "删除病种模板失败"})
		return
	}
	// 返回删除成功信息
	c.JSON(http.StatusOK, gin.H{"message": "病种模板删除成功"})
	// 打印删除成功信息
	fmt.Println("删除病种模板成功:", sickTemplate)
}
